package net.tt.util;
/*
 * @Title: PropUtil.java
 * @Package name.ben.dsc.config 
 * @Description: TODO
 * @author tbc
 * @date 2015年7月17日 上午3:12:45
 * @version
 */

import java.io.*;
import java.util.Properties;

/**
 * 
 * @author tbc E-mail: tbc521@163.com
 * @version 0.0.1 create:2015年7月17日 上午3:12:45
 * 
 * @update 2015年7月30日2:12:29<br>
 *         将getPropertiesAP(String file)标记为不推荐使用<br>
 * 
 */
public class PropUtil {

	private static String classpath = PropUtil.class.getClassLoader().getResource("").getPath();

	/**
	 * 默认配置文件:classpath-filename
	 */
	private static String CONFIG_FILE_DEFAULT = "config.properties";

	// private static String classpath =
	// PropUtil.class.getResource("/").getPath();

	/**
	 * 默认配置文件classpath:config.properties
	 * 
	 * @return
	 */
	public static Properties getProperties() {
		return getPropertiesAP(classpath + CONFIG_FILE_DEFAULT);
	}

	/**
	 * 根据配置文件名加载Properties，classpath路径下
	 * 
	 * @param file
	 * @return
	 */
	public static Properties getProperties(String file) {
		return getPropertiesAP(classpath + initFileName(file));
	}

	/**
	 * 根据配置文件名加载Properties，绝对文件路径
	 * 
	 * @param file
	 * @return
	 */
	public static Properties getProperties(String path, String file) {
		return getPropertiesAP(path + File.separator + initFileName(file));
	}

	/**
	 * <p>
	 * AP: absolute path,绝对路径
	 * </p>
	 * <p>
	 * 不推荐直接应用此方法，建议将配置文件放在classpath或者下级目录，然后直接用相对路径，调用getProperties(String
	 * file)
	 * </p>
	 * 
	 * @param file
	 * @return
	 */
	@Deprecated
	public static Properties getPropertiesAP(String file) {
		Properties prop = null;
		InputStream configstream = null;
		try {
			prop = new Properties();
			configstream = new FileInputStream(file);
			prop.load(configstream);
		} catch (FileNotFoundException e) {
			System.out.println("文件未找到：" + file);
			System.out.println(e.getMessage());
			// return null;
		} catch (IOException e) {
			System.out.println("加载文件流失败");
			System.out.println(e.getMessage());
			// return null;
		}
		return prop;
	}

	private static String initFileName(String file) {
		if (file.endsWith(".properties"))
			return file;
		else
			return file + ".properties";
	}
}
